home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / include / Xm / RowColumnP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-30  |  19.3 KB  |  516 lines

  1. /* 
  2.  * (c) Copyright 1989, 1990, 1991, 1992, 1993 OPEN SOFTWARE FOUNDATION, INC. 
  3.  * ALL RIGHTS RESERVED 
  4. */ 
  5. /* 
  6.  * Motif Release 1.2.3
  7. */ 
  8. /*   $RCSfile: RowColumnP.h,v $ $Revision: 10.1 $ $Date: 1994/02/03 15:47:59 $ */
  9. /*
  10. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  11. #ifndef _XmRowColumnP_h
  12. #define _XmRowColumnP_h
  13.  
  14. #include <Xm/RowColumn.h>
  15. #include <Xm/ManagerP.h>
  16.  
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20.  
  21. /* Button Event Status Record for popup verification at manage time */
  22. typedef struct _XmButtonEventStatusRec
  23. {
  24.     Time time;
  25.     Boolean verified;
  26. #ifndef WAIT_FOR_BETTER_GRAB_SOLUTION
  27.     Boolean waiting_to_be_managed;
  28. #endif
  29.     XButtonEvent event;
  30. } XmButtonEventStatusRec;
  31.  
  32. /* replay info rec - last menu that was posted before event replay */
  33. typedef struct _XmReplayInfoRec
  34. {
  35.     Time time;
  36.     Widget toplevel_menu;
  37. } XmReplayInfoRec;
  38.  
  39. typedef struct _XmMenuFocusRec
  40. {
  41.     Widget  oldWidget;
  42.     Window  oldFocus;
  43.     int     oldRevert;
  44. } XmMenuFocusRec;
  45.  
  46. /* Menu State is per screen */
  47. typedef struct _XmMenuStateRec
  48. {
  49.    Widget RC_LastSelectToplevel;
  50.    XmButtonEventStatusRec RC_ButtonEventStatus;
  51.    XmReplayInfoRec RC_ReplayInfo;
  52. /*
  53.  * needed for funky menubar mode so that the traversal can be restored
  54.  * to the correct highlighted item when we are done.
  55.  */
  56.    Widget RC_activeItem;
  57.    XmMenuFocusRec RC_menuFocus;
  58. /*
  59.  * A workaround is provided to allow applications to get insensitive
  60.  * menu items.  This is useful for context "sensitive-shared-tear off-
  61.  * accelerated" menu items.  Accessed via internal (for now) function,
  62.  * _XmAllowAcceleratedInsensitiveUmanagedMenuItems().
  63.  */
  64.    Boolean RC_allowAcceleratedInsensitiveUnmanagedMenuItems;
  65.    Time MS_LastManagedMenuTime;
  66.    Boolean MU_InDragMode;
  67.    Widget MU_CurrentMenuChild;
  68.    Boolean MU_InPMMode;
  69. } XmMenuStateRec, *XmMenuState;
  70.  
  71.  
  72. typedef struct _XmRCKidGeometryRec
  73. {
  74.   Widget kid;
  75.   XtWidgetGeometry  box;
  76.   Dimension margin_top;
  77.   Dimension margin_bottom;
  78.   Dimension baseline;
  79. } XmRCKidGeometryRec, *XmRCKidGeometry;
  80.  
  81. /* The RowColumn instance record */
  82.  
  83. typedef    struct _XmRowColumnPart
  84. {
  85.     Dimension       margin_height;  /* margin around inside of widget */
  86.     Dimension       margin_width;
  87.  
  88.  
  89.     Dimension       spacing;        /* pixels between entries */
  90.     Dimension       entry_border;   /* size of entry borders */
  91.  
  92.                     /* next only used w/ menubars */
  93.  
  94.     Widget      help_pushbutton;    /* ptr to help pushbutton widget */
  95.  
  96.     Widget      cascadeBtn;         /* if this menu is pulled down by a */
  97.                                     /* pulldown widget this will point */
  98.                                     /* at the pulldown.  needed to go */
  99.                                     /* up the cascade */
  100.  
  101.                     /* next two only used w/ option menus */
  102.                     /* they are really only temporary */
  103.                     /* since the data is passed off to */
  104.                     /* the pulldown widget which is */
  105.                     /* automatically built */
  106.  
  107.     XmString  option_label;         /* label for option menu pulldown */
  108.  
  109.     Widget      option_submenu;     /* which submenu to pulldown */
  110.  
  111.  
  112.     XmRCKidGeometry   boxes;          /* when doing menu layouts is an */
  113.                                     /* array of geo req's to make it easy */
  114.  
  115.     WidgetClass     entry_class;    /* if homogeneous, what class */
  116.  
  117.     XtCallbackList  entry_callback; /* a child fired off */
  118.     XtCallbackList  map_callback;   /* about to be mapped call back */
  119.     XtCallbackList  unmap_callback; /* about to be unmapped call back */
  120.  
  121.     Widget      memory_subwidget;   /* id of last subwidget that */
  122.                                     /* fired off.  Recorded by the */
  123.                                     /* entry_fired proc, can be set too */
  124.                                     /* this causes mouse/muscle memory */
  125.                                     /* to also be reset */
  126.  
  127.     short       num_columns;        /* if columnar packing this is how */
  128.                                     /* many columns to use */
  129.  
  130.     String        menuPost;        /* a translation for posting popups */
  131.     unsigned int    postButton;     /* active mouse button */
  132.     int             postEventType;  /* active mouse event type */
  133.     unsigned int    postModifiers;  /* active mouse modifier */
  134.  
  135.     String      menu_accelerator;
  136.     KeySym        mnemonic;
  137.     XmStringCharSet mnemonicCharSet;
  138.  
  139.     unsigned char   entry_alignment; /* type of label alignment */
  140.                                      /* our children should have */
  141.  
  142.                     /* next two are layout, Tight is the */
  143.                     /* standard menubar packing.  Columns */
  144.                     /* is radio box style, orientation */
  145.                     /* determines if it is column or row */
  146.                     /* major, Vert = column major */
  147.  
  148.     unsigned char   packing;    /* entry packing (layout) style */
  149.  
  150.     unsigned char   type;       /* temporary: diff between menu/bar */
  151.  
  152.     unsigned char   orientation;    /* horizontal or vertical */
  153.  
  154.                     /* next two indicate how the widget */
  155.                     /* responds to size changes if there */
  156.                     /* is no geo mgr.  If true then the */
  157.                     /* dimension is never changed.  Set */
  158.                     /* to true if dimension is spec'd */
  159.                     /* at create time */
  160.  
  161.     Boolean     armed;      /* controls whether pulldowns work */
  162.                             /* or not, button down in any part of */
  163.                             /* the menubar arms it, this is a bit field  */
  164.                             /* used for other internal flags, see macros */ 
  165.  
  166.                     /* next is only valid for popup menus */
  167.  
  168.     Boolean     adjust_margin;  /* T/F, indicating if we should force */
  169.                                 /* all subwidgets to have similar */
  170.                                 /* margins */
  171.     
  172.     Boolean     adjust_last;    /* Indicates whether or not the last row */
  173.                                 /* row or column should be stretched to  */
  174.                                 /* the edge of the row_column widget.    */
  175.  
  176.     Boolean     do_alignment;   /* T/F, do we force alignment on all */
  177.                                 /* our children */
  178.  
  179.     Boolean     radio;          /* T/F, do we do the toggle button */
  180.                                 /* 'only-one-down' enforcement */
  181.  
  182.     Boolean     radio_one;      /* T/F, must have one radio button */
  183.                                 /* set to on */
  184.  
  185.  
  186.     Boolean     homogeneous;    /* T/F, do we only allow a single */
  187.                                 /* class of children */
  188.  
  189.     Boolean     resize_width;
  190.     Boolean     resize_height;
  191.  
  192.     Boolean     popup_enabled;
  193.  
  194.     Dimension    old_width;        /* save the old width, etc to use  */
  195.     Dimension    old_height;        /* at resize time since it now has */
  196.     Dimension    old_shadow_thickness;   /* NW gravity                      */
  197.  
  198.     Widget *    postFromList;        /* list for sharing menupanes */
  199.     int        postFromCount;        /* count of the list */
  200.     int        postFromListSize;    /* size of the malloc'ed list */
  201.  
  202.     Widget      lastSelectToplevel;     /* returned in XmGetPostedFromWidget*/ 
  203.     Widget    popupPosted;        /* popup submenu currently posted */
  204.  
  205.     unsigned char oldFocusPolicy;    /* save when menus begin traversal */
  206.     XmButtonEventStatusRec button_status; /* fix for multi screen          */
  207.  
  208.     /***************** 1.2 ***************/
  209.     unsigned char    TearOffModel;    /* enable/disable flag */
  210.     Widget        ParentShell;    /* Save the parent shell when torn */
  211.     Widget        tear_off_control;
  212.     Boolean        to_state;    /* tear off state */
  213.     /* tear off activate/deactivate callbacks */
  214.     XtCallbackList    tear_off_activated_callback;
  215.     XtCallbackList    tear_off_deactivated_callback;
  216.     Widget        tear_off_lastSelectToplevel;
  217.     Widget        tear_off_focus_item;    /* when tear off is inactive */
  218.     
  219.     unsigned char    entry_vertical_alignment;
  220.     unsigned char    popup_menu_click;
  221.     XtIntervalId    popup_timeout_timer;
  222. } XmRowColumnPart;
  223.  
  224.  
  225. /* Full instance record declaration */
  226.  
  227. typedef struct _XmRowColumnRec
  228. {
  229.     CorePart        core;
  230.     CompositePart    composite;
  231.     ConstraintPart    constraint;
  232.     XmManagerPart    manager;
  233.     XmRowColumnPart    row_column;
  234. } XmRowColumnRec;
  235.  
  236. typedef struct _XmRowColumnWidgetRec /* OBSOLETE (for compatibility only).*/
  237. {
  238.     CorePart        core;
  239.     CompositePart    composite;
  240.     ConstraintPart    constraint;
  241.     XmManagerPart    manager;
  242.     XmRowColumnPart    row_column;
  243. } XmRowColumnWidgetRec;
  244.  
  245.  
  246.  
  247. /* RowColumn class structure */
  248.  
  249. typedef struct _XmRowColumnClassPart
  250. {
  251.     XmMenuProc    menuProcedures; /* proc to interface with menu widgets */
  252.     XtActionProc armAndActivate; /* proc triggered by acclerator */
  253.     XmMenuTraversalProc traversalHandler;/* proc to handle menu traversal */
  254.     XtPointer   extension;      /* Pointer to extension record */
  255. } XmRowColumnClassPart;
  256.  
  257.  
  258.  
  259. typedef struct _XmRowColumnClassRec 
  260. {
  261.     CoreClassPart        core_class;
  262.     CompositeClassPart        composite_class;
  263.     ConstraintClassPart        constraint_class;
  264.     XmManagerClassPart        manager_class;
  265.     XmRowColumnClassPart    row_column_class;
  266. } XmRowColumnClassRec;
  267.  
  268. externalref XmRowColumnClassRec     xmRowColumnClassRec;
  269.  
  270.  
  271.  
  272. /* Constraint Definition */
  273.  
  274. /* No constraint resources */
  275.  
  276. typedef struct _XmRowColumnConstraintPart
  277. {
  278.     Boolean    was_managed;
  279.         Dimension margin_top;
  280.         Dimension margin_bottom;
  281.         Dimension baseline;
  282.     short position_index;
  283. } XmRowColumnConstraintPart;
  284.  
  285. typedef struct _XmRowColumnConstraintRec
  286. {
  287.     XmManagerConstraintPart manager;
  288.     XmRowColumnConstraintPart row_column;
  289. } XmRowColumnConstraintRec;
  290.  
  291.  
  292. /* Access Macros */
  293. #define XmRC_ARMED_BIT          (1 << 0)    
  294. #define XmRC_BEING_ARMED_BIT  (1 << 1)        /* bits in menu's armed byte */
  295. #define XmRC_EXPOSE_BIT       (1 << 2)        /* used in both menu and */
  296. #define XmRC_WINDOW_MOVED_BIT (1 << 3)        /* popup menu, careful */
  297. #define XmRC_WIDGET_MOVED_BIT (1 << 4)
  298. #define XmRC_POPPING_DOWN_BIT (1 << 5)
  299. #define XmRC_FROM_RESIZE_BIT  (1 << 6)
  300.  
  301. #define RC_IsArmed(m)     (((XmRowColumnWidget)(m))->row_column.armed & XmRC_ARMED_BIT)
  302. #define RC_BeingArmed(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_BEING_ARMED_BIT)
  303. #define RC_DoExpose(m)     (((XmRowColumnWidget)(m))->row_column.armed & XmRC_EXPOSE_BIT)
  304. #define RC_WidgetHasMoved(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_WIDGET_MOVED_BIT)
  305. #define RC_WindowHasMoved(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_WINDOW_MOVED_BIT)
  306. #define RC_PoppingDown(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_POPPING_DOWN_BIT)
  307. #define RC_FromResize(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_FROM_RESIZE_BIT)
  308.  
  309.  
  310. #define RC_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  311.  
  312. #define RC_SetArmed(m,v)  RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_ARMED_BIT, v)
  313. #define RC_SetBeingArmed(m,v)  RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_BEING_ARMED_BIT, v)
  314. #define RC_SetExpose(m,v) RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_EXPOSE_BIT, v)
  315. #define RC_SetWidgetMoved(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_WIDGET_MOVED_BIT,v)
  316. #define RC_SetWindowMoved(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_WINDOW_MOVED_BIT,v)
  317. #define RC_SetPoppingDown(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_POPPING_DOWN_BIT,v)
  318. #define RC_SetFromResize(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_FROM_RESIZE_BIT,v)
  319.  
  320. #define RC_MarginW(m)        (((XmRowColumnWidget)(m))->row_column.margin_width)
  321. #define RC_MarginH(m)        (((XmRowColumnWidget)(m))->row_column.margin_height)
  322.  
  323. #define RC_Entry_cb(m)        (((XmRowColumnWidget)(m))->row_column.entry_callback)
  324. #define RC_Map_cb(m)        (((XmRowColumnWidget)(m))->row_column.map_callback)
  325. #define RC_Unmap_cb(m)        (((XmRowColumnWidget)(m))->row_column.unmap_callback)
  326.  
  327. #define RC_Orientation(m)   (((XmRowColumnWidget)(m))->row_column.orientation)
  328. #define RC_Spacing(m)        (((XmRowColumnWidget)(m))->row_column.spacing)
  329. #define RC_EntryBorder(m)   (((XmRowColumnWidget)(m))->row_column.entry_border)
  330. #define RC_HelpPb(m)        (((XmRowColumnWidget)(m))->row_column.help_pushbutton)
  331. #define RC_DoMarginAdjust(m)  (((XmRowColumnWidget)(m))->row_column.adjust_margin)
  332. #define RC_EntryAlignment(m)  (((XmRowColumnWidget)(m))->row_column.entry_alignment)
  333. #define RC_EntryVerticalAlignment(m)  (((XmRowColumnWidget)(m))->row_column.entry_vertical_alignment)
  334. #define RC_Packing(m)       (((XmRowColumnWidget)(m))->row_column.packing)
  335. #define RC_NCol(m)       (((XmRowColumnWidget)(m))->row_column.num_columns)
  336. #define RC_AdjLast(m)       (((XmRowColumnWidget)(m))->row_column.adjust_last)
  337. #define RC_AdjMargin(m)       (((XmRowColumnWidget)(m))->row_column.adjust_margin)
  338. #define RC_MemWidget(m)       (((XmRowColumnWidget)(m))->row_column.memory_subwidget)
  339. #define RC_CascadeBtn(m)   (((XmRowColumnWidget)(m))->row_column.cascadeBtn)
  340. #define RC_OptionLabel(m)  (((XmRowColumnWidget)(m))->row_column.option_label)
  341. #define RC_OptionSubMenu(m)  (((XmRowColumnWidget)(m))->row_column.option_submenu)
  342. #define RC_RadioBehavior(m)  (((XmRowColumnWidget)(m))->row_column.radio)
  343. #define RC_RadioAlwaysOne(m) (((XmRowColumnWidget)(m))->row_column.radio_one)
  344. #define RC_PopupPosted(m)    (((XmRowColumnWidget)(m))->row_column.popupPosted)
  345. #define RC_ResizeHeight(m)    (((XmRowColumnWidget)(m))->row_column.resize_height)
  346. #define RC_ResizeWidth(m)     (((XmRowColumnWidget)(m))->row_column.resize_width)
  347. #define RC_Type(m)           (((XmRowColumnWidget)(m))->row_column.type)
  348. #define RC_EntryClass(m)     (((XmRowColumnWidget)(m))->row_column.entry_class)
  349. #define RC_IsHomogeneous(m)  (((XmRowColumnWidget)(m))->row_column.homogeneous)
  350. #define RC_Boxes(m)          (((XmRowColumnWidget)(m))->row_column.boxes)
  351. #define RC_PopupEnabled(m)   (((XmRowColumnWidget)(m))->row_column.popup_enabled)
  352. #define RC_MenuAccelerator(m)  (((XmRowColumnWidget)(m))->row_column.menu_accelerator)
  353. #define RC_Mnemonic(m)   (((XmRowColumnWidget)(m))->row_column.mnemonic)
  354. #define RC_MnemonicCharSet(m)   (((XmRowColumnWidget)(m))->row_column.mnemonicCharSet)
  355. #define RC_MenuPost(m) (((XmRowColumnWidget) m)->row_column.menuPost)
  356. #define RC_PostButton(m) (((XmRowColumnWidget) m)->row_column.postButton)
  357. #define RC_PostModifiers(m) (((XmRowColumnWidget) m)->row_column.postModifiers)
  358. #define RC_PostEventType(m) (((XmRowColumnWidget) m)->row_column.postEventType)
  359.  
  360. #define RC_OldFocusPolicy(m) (((XmRowColumnWidget) m)->row_column.oldFocusPolicy)
  361. #define RC_ParentShell(m) (((XmRowColumnWidget) m)->row_column.ParentShell)
  362. #define RC_TearOffControl(m) (((XmRowColumnWidget) m)->row_column.tear_off_control)
  363. #define RC_TearOffModel(m) (((XmRowColumnWidget) m)->row_column.TearOffModel)
  364.  
  365. #define RC_popupMenuClick(m) (((XmRowColumnWidget)(m))->row_column.popup_menu_click)
  366.  
  367. /* Tear Off State */
  368.  
  369. #define XmTO_TORN_OFF_BIT    (1 << 0)
  370. #define XmTO_FROM_INIT_BIT    (1 << 1)
  371. #define XmTO_VISUAL_DIRTY_BIT    (1 << 2)
  372. #define XmTO_ACTIVE_BIT        (1 << 3)
  373.  
  374. #define RC_SetTornOff(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_TORN_OFF_BIT,v)
  375.  
  376. #define RC_TornOff(m) (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_TORN_OFF_BIT)
  377.  
  378. #define RC_SetFromInit(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_FROM_INIT_BIT,v)
  379.  
  380. #define RC_FromInit(m)    (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_FROM_INIT_BIT)
  381.  
  382. #define RC_SetTearOffDirty(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_VISUAL_DIRTY_BIT,v)
  383.  
  384. #define RC_TearOffDirty(m) (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_VISUAL_DIRTY_BIT)
  385.  
  386. #define RC_TearOffActive(m) (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_ACTIVE_BIT)
  387.  
  388. #define RC_SetTearOffActive(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_ACTIVE_BIT,v)
  389.  
  390. #define initial_value 0
  391.  
  392. /* Defines used when calling _XmProcessMenuTree() */
  393.  
  394. #define XmADD     0
  395. #define XmDELETE  1
  396. #define XmREPLACE 2
  397.  
  398.  
  399. /* Defines used when calling _XmMenuIsAccessible() */
  400.  
  401. #define XmWEAK_CHECK 1
  402. #define XmMEDIUM_CHECK 2
  403. #define XmSTRONG_CHECK 3
  404.  
  405. #define XmMENU_BEGIN 0
  406. #define XmMENU_MIDDLE 1
  407. #define XmMENU_END 2
  408.  
  409. /* Defines used when calling find_first_managed_child() */
  410. #define ANY_CHILD 0
  411. #define FIRST_BUTTON 1
  412.  
  413.  
  414. /********    Private Function Declarations    ********/
  415. #ifdef _NO_PROTO
  416.  
  417. extern void _XmPostPopupMenu() ;
  418. extern void _XmSetPopupMenuClick() ;
  419. extern Boolean _XmGetPopupMenuClick() ;
  420. extern void _XmAllowAcceleratedInsensitiveUnmanagedMenuItems();
  421. extern void _XmSetSwallowEventHandler() ;
  422. extern void _XmMenuFocus() ;
  423. extern void _XmGetActiveTopLevelMenu() ;
  424. extern Boolean _XmMatchBSelectEvent() ;
  425. extern Boolean _XmMatchBDragEvent() ;
  426. extern void _XmHandleMenuButtonPress() ;
  427. extern void _XmMenuBtnDown() ;
  428. extern void _XmMenuBtnUp() ;
  429. extern void _XmCallRowColumnMapCallback() ;
  430. extern void _XmCallRowColumnUnmapCallback() ;
  431. extern void _XmMenuPopDown () ;
  432. extern Boolean _XmIsActiveTearOff ();
  433. extern void _XmMenuHelp ();
  434. #else
  435.  
  436. extern void _XmPostPopupMenu( 
  437.                         Widget wid,
  438.                         XEvent *event) ;
  439. extern void _XmSetPopupMenuClick( 
  440.                         Widget wid,
  441. #if NeedWidePrototypes
  442.                         int popupMenuClick) ;
  443. #else
  444.                         Boolean popupMenuClick) ;
  445. #endif /* NeedWidePrototypes */
  446. extern Boolean _XmGetPopupMenuClick( 
  447.                         Widget wid) ;
  448. extern void
  449. _XmAllowAcceleratedInsensitiveUnmanagedMenuItems(
  450.         Widget wid,
  451. #if NeedWidePrototypes
  452.         int allowed ) ;
  453. #else
  454.         Boolean allowed ) ;
  455. #endif /* NeedWidePrototypes */
  456. extern void _XmSetSwallowEventHandler( 
  457.                         Widget widget,
  458. #if NeedWidePrototypes
  459.                         int add_handler) ;
  460. #else
  461.                         Boolean add_handler) ;
  462. #endif /* NeedWidePrototypes */
  463. extern void _XmMenuFocus( 
  464.                         Widget w,
  465.                         int operation,
  466.                         Time _time) ;
  467. extern void _XmGetActiveTopLevelMenu( 
  468.                         Widget wid,
  469.                         Widget *rwid) ;
  470. extern Boolean _XmMatchBSelectEvent( 
  471.                         Widget wid,
  472.                         XEvent *event) ;
  473. extern Boolean _XmMatchBDragEvent( 
  474.                         Widget wid,
  475.                         XEvent *event) ;
  476. extern void _XmHandleMenuButtonPress( 
  477.                         Widget wid,
  478.                         XEvent *event) ;
  479. extern void _XmMenuBtnDown( 
  480.                         Widget wid,
  481.                         XEvent *event,
  482.                         String *params,
  483.                         Cardinal *num_params) ;
  484. extern void _XmMenuBtnUp( 
  485.                         Widget wid,
  486.                         XEvent *event,
  487.                         String *params,
  488.                         Cardinal *num_params) ;
  489. extern void _XmCallRowColumnMapCallback( 
  490.                         Widget wid,
  491.                         XEvent *event) ;
  492. extern void _XmCallRowColumnUnmapCallback( 
  493.                         Widget wid,
  494.                         XEvent *event) ;
  495. extern void _XmMenuPopDown( 
  496.                         Widget w,
  497.                         XEvent *event,
  498.                         Boolean *popped_up) ;
  499. extern Boolean _XmIsActiveTearOff (
  500.              Widget w) ;
  501. extern void _XmMenuHelp(
  502.                         Widget wid,
  503.                         XEvent *event,
  504.                         String *params,
  505.                         Cardinal *num_params) ;
  506. #endif /* _NO_PROTO */
  507. /********    End Private Function Declarations    ********/
  508.  
  509.  
  510. #ifdef __cplusplus
  511. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  512. #endif
  513.  
  514. #endif  /* _XmRowColumnP_h */
  515. /* DON'T ADD STUFF AFTER THIS #endif */
  516.